package com.raising.framework.dao;

import com.raising.framework.interceptor.Page;

import java.util.List;

/**
 * DAO支持类实现
 * @author gaoy
 * @param <T>
 */
public interface ICrudDao<T> extends IBaseDao {

	/**
	 * 获取单条数据
	 * @author gaoyuan
	 * @param id 标识
	 * @return
	 */
	T get(String id);

	/**
	 * 获取单条数据【根据条件】
	 * @author gaoyuan
	 * @param entity 实体类对象
	 * @return
	 */
	T getByParam(T entity);

	/**
	 * 查询数据列表
	 * @author gaoyuan
	 * @param entity 实体类对象
	 * @return
	 */
	List<T> getList(T entity);
	/**
	 * 查询分页
	 * @author GaoYuan
	 * @param page 分页对象
	 * @return
	 */
	List<T> getPage(Page<T> page);

	/**
	 * 插入数据
	 * @author gaoyuan
	 * @param entity
	 * @return
	 */
	int insert(T entity);

	/**
	 * 更新数据
	 * @author gaoyuan
	 * @param entity
	 * @return
	 */
	int update(T entity);

	/**
	 * 删除数据
	 * @author gaoyuan
	 * @param id
	 * @return
	 */
	int delete(String id);

	/**
	 * 删除数据
	 * @author gaoyuan
	 * @param entity
	 * @return
	 */
	int deleteByParam(T entity);

}